package com.tfy.liquor.util;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class DateUtil {

    /**
     * 获取当前日期
     *
     * @return
     */
    public static Date getNowDate() {
//        LocalDate date = LocalDate.now(); // get the current date
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//        System.out.println(date.format(formatter));
        return new Date();
    }

    /**
     * 获取当前时间
     *
     * @return
     */
    public static Date getNowTime() {
        return new Date();
    }

    /**
     * 获取当前日期和时间
     *
     * @return
     */
    public static Timestamp getNowDateTime() {
        // 获取当前时间并且格式化后返回
        //获取当前系统时间
//        Timestamp date=new Timestamp(System.currentTimeMillis());
        //定义格式，不显示毫秒
//        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        return new Timestamp(new Date().getTime());
        return new Timestamp(System.currentTimeMillis());
    }

    /**
     * 将传入的日期转成Timestamp类型
     *
     * @param date
     * @return
     */
    public static Timestamp getChageDateTime(String date) {
        return Timestamp.valueOf(date);
    }

    public static Date getChageDate(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    //格式化规则
        try {
            // 如果时间为空,则默认时间为今天
            if (null == date) {
                date = new Date();
            }
            String strDate = sdf.format(date); //格式化成yyyy-MM-dd格式的时间字符串
            Date newDate = sdf.parse(strDate);
            java.sql.Date resultDate = new java.sql.Date(newDate.getTime());//最后转换成 java.sql.Date类型
            return resultDate;
        } catch (ParseException e) {
            e.printStackTrace();
            return date;
        }
    }

    /**
     * 获取当前时间，毫秒级别, yyyyMMddHHmmssSSS
     * 默认时区为东8区
     */
    public static String getMilliSecond() {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
        // 默认时区为东8区
        return LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);
    }

    /**
     * 返回当前时间，yyyy-MM-dd HH:mm:ss:SSS
     */
    public static String getNanoTime() {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
        return dateTimeFormatter.format(LocalDateTime.now());
    }

}
